import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n

import '@/styles/index.scss' // global css

import App from './App'
import router from './router'
import store from './store'

import '@/icons' // icon
import '@/permission' // permission control
import { hasBtnPermission } from './utils/permission' // button permission

Vue.use(ElementUI, { locale })

Vue.config.productionTip = false
Vue.prototype.hasPerm = hasBtnPermission

import { Message } from 'element-ui'
// 定义一个新的Message方法，多传入一个offset参数
const $message = options => {
  return Message({
    ...options,
    offset: 60
  })
};

// 重写一遍success的方法,将offset写入options
['success', 'warning', 'info', 'error'].forEach(type => {
  $message[type] = options => {
    if (typeof options === 'string') {
      options = {
        message: options,
        offset: 60
      }
    }
    options.type = type
    return Message(options)
  }
})
// 将$message挂载到this上
Vue.prototype.$message = $message

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
